package com.ito.ito.areaTrabajo.modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "GPlantillas")
public class Gplantillas implements Serializable {
	private static final long serialVersionUID = 1L;
	//
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "idGplantillas", nullable = false)
	private Long idGplantillas;
	
	@Column(name = "nombre")
	private String nombrePlantilla;

	@ManyToOne(optional = true)
	@JoinTable(name = "cliente_GPlantillas", joinColumns = { @JoinColumn(name = "idGplantillas") }, inverseJoinColumns = { @JoinColumn(name = "idCliente") })
	private Cliente cliente;
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinTable(name="GPlantillas_plantilla",joinColumns={@JoinColumn(name="idGplantillas",unique=true)},inverseJoinColumns={@JoinColumn(name="idPlantilla")})
	private List<Plantilla> plantillas=new ArrayList<Plantilla>();

	@OneToMany(targetEntity=Proyecto.class,cascade=CascadeType.ALL,mappedBy="gplantillas")
	private List<Proyecto> proyectos=new ArrayList<Proyecto>();
	
	// gets y sets
	public Long getIdGplantillas() {
		return idGplantillas;
	}

	public void setIdGplantillas(Long idGplantillas) {
		this.idGplantillas = idGplantillas;
	}

	public String getNombrePlantilla() {
		return nombrePlantilla;
	}

	public void setNombrePlantilla(String nombrePlantilla) {
		this.nombrePlantilla = nombrePlantilla;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public List<Plantilla> getPlantillas() {
		return plantillas;
	}

	public void setPlantillas(List<Plantilla> plantillas) {
		this.plantillas = plantillas;
	}

	public List<Proyecto> getProyectos() {
		return proyectos;
	}

	public void setProyectos(List<Proyecto> proyectos) {
		this.proyectos = proyectos;
	}

}
